package demo03;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/*
 *  IO流异常JDK7前的处理方式：try...catch...finally
 */
public class Demo01IOTryCatch {
    public static void main(String[] args) {
        // IO流初始化，扩大作用域
        FileReader fileReader = null;
        FileWriter fileWriter = null;

        try {
            fileReader = new FileReader("file\\copy\\monkey.txt");
            fileWriter = new FileWriter("file\\copy\\kingkon.txt", true); // 可续写
            int len; // 记录有效字符数
            char[] chars = new char[1024]; // 确定一次读取的字符数量
            while ((len = fileReader.read(chars)) != -1) {
                fileWriter.write(chars, 0, len); // 文件字符复制操作
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭流文件
            if (fileReader != null) { // 判断fileReader是否为空，为空则不执行关闭
                try { // 关闭时方法同样会声明抛出异常，需要捕获处理
                    fileReader.close(); // 关闭fileReader流
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fileWriter != null) {
                try {
                    fileWriter.close(); // 关闭fileWriter流
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
